﻿using log4net;
using PcaCaja.BOL;
using PcaCore.DAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace PcaCaja.DAL
{
    public class dDiario
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(dDiario));

        #region public

        public static void Insert(string empresaId,
                                  string oficinaId,
                                  DateTime fecha)
        {
            try
            {
                //CREATE OR REPLACE FUNCTION pca_caja.fn_add_diario(varchar,--empresa_id $1
                //          varchar,--oficina_id $2
                //          date --fecha $3
                //          )RETURNS void
                Core.ExecuteNonQuery("pca_caja.fn_add_diario",
                                     new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, empresaId),
                                     new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, oficinaId),
                                     new oParametro(NpgsqlTypes.NpgsqlDbType.Date, fecha));
            }
            catch (Exception ex)
            {
                throw Core.LogException(log, ex, MethodBase.GetCurrentMethod().Name);
            }
        }

        public static oDiario Get(string empresaId,
                                  string oficinaId,
                                  DateTime fecha)
        {
            try
            {
                //CREATE OR REPLACE FUNCTION pca_caja.fn_get_diario(varchar,--empresa_id $1
                //          varchar,--oficina_id $2
                //          date --fecha $3
                //          )RETURNS SETOF pca_caja.diarios
                return Core.GetObjectDb<oDiario>("pca_caja.fn_get_diario",
                                                 new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, empresaId),
                                                 new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, oficinaId),
                                                 new oParametro(NpgsqlTypes.NpgsqlDbType.Date, fecha));
            }
            catch (Exception ex)
            {
                throw Core.LogException(log, ex, MethodBase.GetCurrentMethod().Name);
            }
        }

        public static void Cerrar(string empresaId,
                                  string oficinaId,
                                  DateTime fecha)
        {
            try
            {
                //CREATE OR REPLACE FUNCTION pca_caja.fn_cerrar_diario(varchar,--empresa_id $1
                //             varchar,--oficina_id $2
                //             date --fecha $3
                //             )RETURNS void
                Core.ExecuteNonQuery("pca_caja.fn_cerrar_diario",
                                     new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, empresaId),
                                     new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, oficinaId),
                                     new oParametro(NpgsqlTypes.NpgsqlDbType.Date, fecha));
            }
            catch (Exception ex)
            {
                throw Core.LogException(log, ex, MethodBase.GetCurrentMethod().Name);
            }
        }

        #endregion
    }
}
